class StateMachine {
    constructor() {
        this.state = 'UNAUTHENTICATED'; // 初始状态：未认证
    }

    // 处理事件的方法
    onEvent(event) {
        switch (this.state) {
            case 'UNAUTHENTICATED':
                if (event === 'login') {
                    this.state = 'AUTHENTICATING';
                    return "正在尝试登录...";
                } else {
                    return "无效事件：当前处于未认证状态";
                }
            case 'AUTHENTICATING':
                if (event === 'success') {
                    this.state = 'AUTHENTICATED';
                    return "登录成功！";
                } else if (event === 'failure') {
                    this.state = 'UNAUTHENTICATED';
                    return "登录失败，请重试！";
                } else {
                    return "无效事件：当前处于认证中状态";
                }
            case 'AUTHENTICATED':
                if (event === 'logout') {
                    this.state = 'UNAUTHENTICATED';
                    return "已注销！";
                } else {
                    return "无效事件：当前处于已认证状态";
                }
            default:
                return "未知状态！";
        }
    }
}

// 测试状态机
const stateMachine = new StateMachine();

console.log(stateMachine.onEvent('login'));      // 正在尝试登录...
console.log(stateMachine.onEvent('success'));    // 登录成功！
console.log(stateMachine.onEvent('logout'));     // 已注销！
console.log(stateMachine.onEvent('login'));      // 正在尝试登录...
console.log(stateMachine.onEvent('failure'));    // 登录失败，请重试！